package com.fc.utils;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.generator.RandomGenerator;

import java.util.HashMap;
import java.util.Map;

/**
 * 验证码工具类
 * 功能：生成四位数字+字母验证码，含干扰线
 */
public class CaptchaImageUtil {

    // 优化字符集（排除易混淆字符）
    private static final String BASE_CHAR = "23456789ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz";
    private static final int CODE_LENGTH = 4;  // 验证码长度
    private static final int WIDTH = 120;      // 图片宽度
    private static final int HEIGHT = 40;      // 图片高度
    private static final int LINE_COUNT = 5;  // 干扰线数量

    /**
     * 生成验证码图片和对应code
     *
     * @return Map<String, Object> 包含code和imageBase64
     */
    public static Map<String, Object> generateCaptcha() {
        // 1. 创建验证码对象（通过构造函数设置干扰线数量）
        LineCaptcha captcha = CaptchaUtil.createLineCaptcha(WIDTH, HEIGHT, CODE_LENGTH, LINE_COUNT);

        // 2. 设置自定义字符生成器
        RandomGenerator randomGenerator = new RandomGenerator(BASE_CHAR, CODE_LENGTH);
        captcha.setGenerator(randomGenerator);
        captcha.createCode();

        // 3. 返回结果（验证码+Base64图片）
        Map<String, Object> result = new HashMap<>(2);
        result.put("code", captcha.getCode());
        result.put("image", captcha.getImageBase64());
        return result;
    }
}